//package com.shine.commonlibrary.utils.api;
//
//import android.app.Dialog;
//
//import com.jaydenxiao.common.base.BaseActivity;
//import com.jaydenxiao.common.baseapp.BaseApplication;
//import com.jaydenxiao.common.basebean.BaseResponse;
//import com.jaydenxiao.common.baserx.ApiException;
//import com.jaydenxiao.common.commonutils.NetWorkUtils;
//import com.jaydenxiao.common.commonwidget.LoadingDialog;
//
//import rx.Subscriber;
//
///**
// * Created by M_genius on 2017/6/5 15:46.
// */
//
//public abstract class CustomSubscriber<R extends BaseResponse<T>, T> extends Subscriber<R> {
//    private BaseActivity mActivity;
//    private String msg;
//    private boolean showDialog=true;
//    private boolean cancelable = true;
//    private Dialog mDialog;
//
//
//    public CustomSubscriber(BaseActivity context, String msg, boolean showDialog, boolean cancelable) {
//        this.mActivity = context;
//        this.msg = msg;
//        this.showDialog=showDialog;
//        this.cancelable = cancelable;
//    }
//    public CustomSubscriber(BaseActivity context, boolean showDialog, boolean cancelable) {
//        this(context, BaseApplication.getAppContext().getString(com.jaydenxiao.common.R.string.loading), showDialog, cancelable);
//    }
//
//
//    @Override
//    public void onStart() {
//        super.onStart();
//        if (showDialog) {
//            try {
//                mDialog =  LoadingDialog.showDialogForLoading(mActivity, msg, cancelable);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//    }
//
//    @Override
//    public void onNext(R  r) {
//        if (!r.isOk()) {
//            throw new ApiException(r.getErrorMsg());
//        } else {
//            _onNext(r.getData());
//        }
//    }
//
//    public abstract void _onNext(T t);
//
//    public abstract void _onError(String msg);
//
//    @Override
//    public void onCompleted() {
//        if (mDialog != null) {
//            mDialog.cancel();
//            mDialog = null;
//        }
//    }
//
//    @Override
//    public void onError(final Throwable e) {
//        mActivity.runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                if (mDialog != null) {
//                    mDialog.cancel();
//                    mDialog = null;
//                }
//                e.printStackTrace();
//                //无网络
//                if (!NetWorkUtils.isNetConnected(BaseApplication.getAppContext())) {
//                    _onError("无网络连接");
//                }
//                //服务器
//                else if (e instanceof ApiException) {
//                    _onError(((ApiException) e).getErrorMessage());
//                }
//                else {
//                    _onError("error:" + e.getLocalizedMessage() + " Please check!");
//                }
//            }
//        });
//    }
//}
